//题目链接：https://www.nowcoder.com/practice/88f7e156ca7d43a1a535f619cd3f495c?tpId=308&tqId=40470&ru=/exam/oj

#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;

const int N = 2e5 + 10;

int n, m;
int h[N], e[N], ne[N], idx;
int q[N], d[N];
int hh, tt;

void add(int a, int b) {
    e[idx] = b, ne[idx] = h[a], h[a] = idx++;
}
bool topsort() {
    hh = 0, tt = -1;
    // 入度为0的点
    for (int i = 1; i <= n; ++i)
        if (!d[i])
            q[++tt] = i;

    while (hh <= tt) {
        int t = q[hh++];
        for (int i = h[t]; i != -1; i = ne[i]) {
            int j = e[i];
            d[j]--;
            if (d[j] == 0)
                q[++tt] = j;
        }
    }
    return tt == n - 1;
}
int main() {
    cin >> n >> m;
    memset(h, -1, sizeof h);
    for (int i = 0; i < m; ++i) {
        int a, b;
        cin >> a >> b;
        add(a, b);
        d[b]++;
    }
    if (topsort()) {
        printf("%d", q[0]);
        for (int i = 1; i < n; ++i)
            printf(" %d", q[i]);
        printf("\n");
    }else puts("-1");
    return 0;
}